import { Point } from '../entity/point'

/**
 * 图标的属性对象
 */
export interface IconOptions {
    /**
     * 请求图标图片的 `URL`（脚本中的绝对或相对路径）
     *
     * 默认值为 `''`
     */
    iconUrl?: string;

    /**
     * 图标可视区域的大小
     *
     * 默认值为 `Point(25, 41)`
     */
    iconSize?: Point;

    /**
     * 图标的定位锚点。
     * 此点用来决定图标与地理位置的关系，是相对于图标左上角的偏移值，默认等于图标宽度和高度的中间值
     *
     * 默认值为 `Point(12, 41)`
     */
    iconAnchor?: Point
}

/**
 * 此类表示标注覆盖物所使用的图标
 */
export interface Icon {
    readonly options: IconOptions;

    /**
     * 以给定的图像地址和大小创建图标对象实例
     *
     * @param opts 图标的属性对象
     */
    new(opts?: IconOptions): Icon;

    /**
     * 获取图标使用的图片 `URL`
     */
    getIconUrl: () => string;
    /**
     * 设置图片资源的地址
     *
     * @param iconUrl 图标地址
     */
    setIconUrl: (iconUrl: string) => void;

    /**
     * 获取图标可视区域的大小
     */
    getIconSize: () => Point;
    /**
     * 设置图标可视区域的大小
     *
     * @param size 图标大小
     */
    setIconSize: (size: Point) => void;

    /**
     * 获取相对于图片左上角的像素距离
     */
    getIconAnchor: () => string;
    /**
     * 设置相对于图片左上角的像素距离
     *
     * @param anchor 对于图片左上角的像素距离
     */
    setIconAnchor: (anchor: Point) => void
}
